package com.ionehe.group.common.notify.message.producer;

import org.apache.rocketmq.client.producer.LocalTransactionExecuter;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

/**
 * Copyright (c) 2021 ionehe.com
 * Date: 2021/4/21
 * Time: 1:22 下午
 *
 * @author 2021年 <a href="mailto:a@ionehe.com">秀</a>
 * 【生产者(事务消息型)】
 */
public interface TransactionProducer {
  /**
   * 启动
   */
  void start();

  /**
   * 停止
   */
  void shutdown();

  /**
   * 发送
   * @param message 消息对象
   * @param executer 本地事务执行器
   * @param arg 参数
   * @return 发送结果
   */
  SendResult send(Message message, LocalTransactionExecuter executer, Object arg);

  /**
   * 是否启动
   * @return 是否
   */
  boolean isStarted();

  /**
   * 是否已关闭
   * @return 是否
   */
  boolean isClosed();
}